package asCachePool.interfaces
{
	/**
	 * 缓存池接口
	 * @author Pelephone
	 * @website http://cnblogs.com/pelephone
	 */
	public interface ICachePool
	{
		/**
		 * 将对象通过主键放入缓存池
		 * @param keyName 主键名
		 * @param body 要级存对象
		 */
		function putInCache(keyName:String, body:Object):*;
		/**
		 * 通过主键名获取池里面缓存对象
		 * @param keyName 主键名
		 */
		function getCache(keyName:String):*;
		/**
		 * 移出缓存
		 * @param keyName 主键名
		 */
		function removeCache(keyName:String):void;
		/**
		 * 池里是否有此主键名对应的缓存
		 * @param keyName 主键名
		 */
		function hasCache(keyName:String):Boolean;
		
		/**
		 * 通过详细缓存信息放入缓存池
		 * @param keyName 主键名
		 * @param cacheInf 缓存信息接口
		 */
		function putCacheInfo(keyName:String,cacheInf:ICacheInfo):ICacheInfo;
		/**
		 * 获取详细缓存信息
		 * @param keyName 主键名
		 */
		function getCacheInfo(keyName:String):ICacheInfo;
		
		/**
		 * 清理过期缓存
		 */
		function clearExpired():void;
		/**
		 * 移出所有缓存
		 */
		function removeAllCache():void;
		
		/**
		 * 缓存容量(能缓存的对象个数)
		 * @return 
		 */
		function set capacity(value:int):void;
		function get capacity():int;
	}
}